package com.zeta.demo.kt.common.config

import com.zeta.api.client.logs.ILogsApi
import lombok.extern.slf4j.Slf4j
import org.springframework.context.annotation.Bean
import org.springframework.context.annotation.Configuration
import org.zetaframework.log.event.LogListener

/**
 * 日志事件配置
 *
 * @author gcc
 */
@Slf4j
@Configuration
class LogEventConfiguration(private val logsApi: ILogsApi) {

    /**
     * # 配置系统日志事件监听 实现
     *
     * 说明：
     * ```
     * 考虑到不是所有项目都有记录用户操作日志的需求。故将日志记录功能剥离出来放到zetaframework核心包中。
     * 开发者可以在配置文件中将"zeta.log.enable"的值改成false。这样就关闭用户操作日志记录功能了
     * ```
     * @return [LogListener]
     */
    @Bean
    fun sysLogListener(): LogListener {
        // 远程调用 保存操作日志
        return LogListener {
            logsApi.saveOptLog(it)
        }
    }

}